package ejb.metrica.seguridad.entity;


import ejb.metrica.seguridad.control.LoginDTO;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * The Data Transfer Object class.
 * Created 15/05/2006 03:30:43 PM
 * @author jsanchez
 */
public class BusquedaDTO extends LoginDTO implements java.io.Serializable {
    
    private java.lang.Integer id;
    private java.lang.String Rol;
    private java.lang.String usuario;
    private java.lang.String nomres;
    private java.lang.String apellidos;
    
    private boolean dirty = false; //dirty flag
    
    public BusquedaDTO(){
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }
    
    public java.lang.Integer getId(){ return id; }
    public void setId(java.lang.Integer id){
        this.id = id;
        setDirty();
    }
    
    public java.lang.String getNomres(){ return nomres; }
    public void setNomres(java.lang.String nomres){
        this.nomres = nomres;
        setDirty();
    }
    
    public java.lang.String getApellidos(){ return apellidos; }
    public void setApellidos(java.lang.String apellidos){
        this.apellidos = apellidos;
        setDirty();
    }

    public String getRol() {return Rol;}
    public void setRol(String Rol) {
        this.Rol = Rol;
        setDirty();
    }

    public String getUsuario() {return usuario;}
    public void setUsuario(String usuario) {
        this.usuario = usuario;
        setDirty();
    }

    
    // populate DTO from Object
    public void populate(Object o) {
        Method[] methods = o.getClass().getMethods();
        for (int i = 0; i < methods.length; i++) {
            try{
                String methodName = methods[i].getName();
                if ((methodName.startsWith("get") ||
                        methodName.startsWith("is"))
                        && Modifier.isPublic(methods[i].getModifiers())
                        && methods[i].getParameterTypes().length == 0
                        && !methodName.equals("getClass")) {
                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
                            invoke(this, new Object[]{methods[i].invoke(o,new Object())});
                }
            }catch(IllegalAccessException ilE){
                ilE.printStackTrace();
            }catch(InvocationTargetException invE){
                invE.printStackTrace();
            }catch(NoSuchMethodException noE){
                // Don't find setMethod for field
            }
        }
    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "id: " + this.id + ", " +
                "nomres: " + this.nomres + ", " +
                "rol: " + this.Rol+ ", " +
                "usuario: " + this.usuario+ ", " +
                "apellidos: " + this.apellidos + "]";
        
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof ejb.metrica.seguridad.entity.BusquedaDTO)) {
            return false;
        }
        ejb.metrica.seguridad.entity.BusquedaDTO other = (ejb.metrica.seguridad.entity.BusquedaDTO) otherOb;
        return (
                
                (id==null?other.id==null:id.equals(other.id))
                &&
                (nomres==null?other.nomres==null:nomres.equals(other.nomres))
                &&
                (apellidos==null?other.apellidos==null:apellidos.equals(other.apellidos))
                &&
                (Rol==null?other.Rol==null:Rol.equals(other.Rol))
                &&
                (usuario==null?other.usuario==null:usuario.equals(other.usuario))
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (
                
                (id==null?0:id.hashCode())
                ^
                (nomres==null?0:nomres.hashCode())
                ^
                (apellidos==null?0:apellidos.hashCode())
                ^
                (Rol==null?0:Rol.hashCode())
                ^
                (usuario==null?0:usuario.hashCode())
                );
    }
    
}
